{% extends "base.html" %} {% block title %}{{ p.title }} · {{ app_name }}{% endblock %} {% block body %}

{% if ev %}{{ ev.sign or '🎟' }}{% else %}🎁{% endif %} {{ p.title }} {{ p.version }}

{{ p.summary }} {% if p.author %}— {{ p.author }}{% endif %} · {{ p.license }}{% if p.nsfw %} · 18+{% endif %} {% if p.removed_at %} · removed {{ p.removed_at|local('%Y-%m-%d') }}{% elif not p.enabled %} · switched off{% endif %} {% if m.playset.homepage %} · homepage ↗{% endif %}

{% if ev %}

{{ ev.sign or '🎟' }} {{ ev.name }}

{{ ev.starts }} → {{ ev.ends }} · {{ e.days if e else '' }} days {% if e %}· {% if e.state == 'running' %}day {{ e.day }}{% elif e.state == 'upcoming' %}starts in {{ e.starts_in_days }} days{% else %}ended{% endif %}{% endif %} {% if e and e.joined %} · you're in{% endif %}

{% if e and e.state == 'running' and e.joined %}

{{ e.line }}

{% endif %} {% if ev.voice != 'mix' %}

While you're in it, its lines take the Handler's voice for every kind it wrote; the rest stay yours.

{% endif %} {% if ev.days %}

{{ ev.days|length }} days carry scheduled training, assigned on the day, due at midnight.

{% endif %} {% if e and e.state != 'ended' and not e.joined and p.enabled and not p.removed_at %}
{% elif e and e.joined and e.state != 'ended' %}
{% endif %}
{% endif %} {% if m.badges %}

Badges

{% for b in m.badges %} {% set rs = p.slug ~ ':' ~ b.slug %} {% endfor %}
badgewhat it takesrule
{% if art.get(rs) %}{% else %}{{ b.icon or '🏅' }}{% endif %} {{ b.title }}{% if b.xp %} +{{ b.xp }} xp{% endif %} {{ b.blurb }} {{ b.rule.kind }}{% for k, v in b.rule.items() if k != 'kind' %} {{ k }}={{ v }}{% endfor %}
{% endif %}

What it carries

Installed {{ p.installed_at|local('%Y-%m-%d') }} from {{ p.source or 'a file' }} · {{ (p.size / 1024)|round|int }} KB · sha {{ p.sha }}

{% if readme %}

From the author

{{ readme|safe }}
{% endif %}
← Playsets {% if not p.removed_at %}
{% endif %}
{% endblock %}